package com.lantosec.hmrp.modules.sysdata.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lantosec.hmrp.core.kit.PageVO;
import com.lantosec.hmrp.modules.sysdata.entity.SysDataProcessTask;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lantosec.hmrp.modules.workflow.vo.FlowTaskVO;
import org.flowable.task.api.Task;

import java.util.List;

/**
 * <p>
 * 系统数据流程任务关联表 服务类
 * </p>
 *
 * @author AutoCode
 * @since 2020-03-10
 */
public interface ISysDataProcessTaskService extends IService<SysDataProcessTask> {

    /**
     * 保存流程任务
     *
     * @param task         流程任务信息
     * @param task         任务操作人，多个以逗号隔开
     * @param formLayoutId 表单布局Id
     * @param auditStatus  审核状态 1 通过，0 不通过
     * @param comment      审核意见
     * @param sign         签名图片，base64转码保存
     * @return
     */
    boolean saveTask(Task task, String assignee, String formLayoutId, Integer auditStatus, String comment, String sign);

    /**
     * 新增流程任务
     *
     * @param task         流程任务信息
     * @param task         任务操作人，多个以逗号隔开
     * @param formLayoutId 表单布局Id
     * @return
     */
    int insertTask(Task task, String assignee, String formLayoutId);

    /**
     * 新增流程任务
     *
     * @return
     */
    int insertTask(String processInstanceId, String taskId, String assignee, String formLayoutId, Boolean isStart);

    /**
     * 更新查看时间
     *
     * @param userId 用户Id
     * @param taskId 任务Id
     * @return
     */
    boolean updateLookTime(String userId, String taskId);

    /**
     * 根据流程实例Id查询流程任务记录
     *
     * @param proInsId 流程实例Id
     * @return
     */
    List<SysDataProcessTask> listByProInsId(String proInsId);

    /**
     * 根据流程节点操作人查询最新的流程信息（我的参与）
     * @param taskAssignee  操作人
     * @return  流程信息列表
     */
    Page<FlowTaskVO> queryPartakeTask(PageVO<FlowTaskVO> page, String taskAssignee);

    /**
     * 根据流程节点操作人查询最新的流程信息数量（我的参与）
     * @param taskAssignee  操作人
     * @return  流程信息列表
     */
    long countPartakeTask(String taskAssignee);
}
